package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.RCBasePurchaseOrder;
import com.shrct.businessprocess.purchase.RCPurchaseOrderAcceptPay;
import com.shrct.businessprocess.purchase.impl.RCBasePurchaseOrderAcceptImpl;
import com.shrct.businessprocess.purchase.proxy.RCBasePurchaseOrderAcceptProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;

@EntityImplementation(implementBy = RCBasePurchaseOrderAcceptImpl.class)
public interface RCBasePurchaseOrderAccept extends IModelObject {
  public abstract Date getDate();
  
  public abstract RCBasePurchaseOrderAccept setDate(final Date date);
  
  public abstract Date getTermDate();
  
  public abstract RCBasePurchaseOrderAccept setTermDate(final Date termDate);
  
  public abstract String getComment();
  
  public abstract RCBasePurchaseOrderAccept setComment(final String comment);
  
  public abstract Collection<RCPurchaseOrderAcceptPay> getPays();
  
  /**
   * 已支付金额
   */
  public abstract RCProjectMoney getTotalPaidAmount();
  
  public abstract Boolean getIsTotalPaid();
  
  public abstract Boolean isTermOverDue();
  
  /**
   * 尝试从已付款中选取费用作为本次收货的欠款
   */
  public abstract void pay(final RCProjectMoney payAmount);
  
  /**
   * 尝试从已付款中选取费用作为本次收货的所有欠款
   */
  public abstract void pay();
  
  public abstract RCBasePurchaseOrder getPurchaseOrder();
  
  /**
   * 到货总金额
   */
  public abstract RCProjectMoney getTotalAmount();
  
  public abstract RCBasePurchaseOrderAcceptProxy toProxy();
}
